/*
闭包作用

函数执行形成的私有作用域会保护里面的私有变量不受外界干扰。

*/

//通过挂在载windows上
(function(window,undefined){
    var jQuery = function(){

    };

    window.jQuery = window.$ = jquery;
})(window);


//通过return赋值给变量
var Zepto = (function(){
    var Zepto = function(){

    };

    return Zepto;
})();
Zepto();

/*
在真实项目中，我们利用这种保护机制实现团队协作开发。（避免了多人同一个命名，导致代码冲突的问题）
*/


~function () {
    //=>A写的代码
    function fn(){

    }

    window.fn = fn;
}();

~function () {
    //=>B写的代码
    function fn(){}

    //=>B想要调取A写的fn
    window.fn();
}();

/*
    这样有个问题，要暴露多少就要在window下挂载多少，数量多了的话，也难处理
    再演进就是单利模式
*/